"""
两个产品(两种类型的书)
"""
class TechnicalBooks(object):
    """技术书籍"""

    def publish(self):
        return "Python-Book"


class LiteraryBooks(object):
    """文学书籍"""

    def publish(self):
        return "Black Hole Book"


# 现在我们有两种类型的书，分别是TechnicalBooks和LiteraryBooks的书
# 按照我们平常的方法来实例化的话，此时创建对象时是会对客户端暴露真正创建的类
#it_books = TechnicalBooks()
#ly_books = LiteraryBooks()


# 这时我们就可以构造一个"简单工厂"把所有实例化的过程封装在里面，把真正实例的类隐藏起来
class SimpleFactory(object):
    """简单工厂"""

    @staticmethod
    def publish_book(name):
        if name == 'technical':
            return TechnicalBooks()
        elif name == 'literary':
            return LiteraryBooks()
        else:
            print("not find")


it_books2 = SimpleFactory.publish_book('technical')
if(it_books2 !=None):
    print(it_books2.publish())

ly_books2 = SimpleFactory.publish_book('literary')
print(ly_books2.publish())
"""
简单工厂使用场景：

已经确定有多少具体的类，不会再增加的情况下使用。
例如：某个系统，已经明确就只会有MySQL、Redis、MongoDB三个数据库的情况下，可以直接使用简单工厂模式。
"""
